/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package empresa;

/**
 * This is the class of objects that know the data of the employees.
 * @author Mariano Fernández López
 */
public class Empleado extends Trabajador {
    private String nss;
    private float sueldoBrutoAnual;
    private float retencionIRPF;

    /**
     *  This is the builder of the class
     *  @param nif del empleado
     *  @param nss  (número de la Seguridad Social) del empleado
     *  @param sexo del empleado
     *  @param nombre del empleado
     *  @param telefono del empleado
     *  @param sueldoBrutoAnual del empleado
     *  @param retencionIRPF del empleado, es un número entre 0 y 1.
     */

    public Empleado(String nif,
                    String nss,
                    Sexo sexo,
                    String nombre,
                    String direccion,
                    int telefono,
                    float sueldoBrutoAnual,
                    float retencionIRPF)
    {
        this.nif = nif;
        this.nss = nss;
        this.sexo = sexo;
        this.nombre = nombre;
        this.direccion = direccion;
        this.telefono = telefono;
        this.sueldoBrutoAnual = sueldoBrutoAnual;
        this.retencionIRPF = retencionIRPF;
    }

    /**
     * @return the nss
     */
    public String getNss() {
        return nss;
    }

    /**
     * @param nss the nss to set
     */
    public void setNss(String nss) {
        this.nss = nss;
    }

    /**
     * @return the sueldoBrutoAnual
     */
    public float getSueldoBrutoAnual() {
        return sueldoBrutoAnual;
    }

    /**
     * @param sueldoBrutoAnual the sueldoBrutoAnual to set
     */
    public void setSueldoBrutoAnual(float sueldoBrutoAnual) {
        this.sueldoBrutoAnual = sueldoBrutoAnual;
    }

    /**
     * @return the retencionIRPF
     */
    public float getRetencionIRPF() {
        return retencionIRPF;
    }

    /**
     * @param retencionIRPF the retencionIRPF to set
     */
    public void setRetencionIRPF(float retencionIRPF) {
        this.retencionIRPF = retencionIRPF;
    }
    
    @Override
    public String toString() {
        return super.toString() + "NSS: " + getNss();
    }

    @Override
    public float costeAnual() {
        return this.sueldoBrutoAnual*(1+this.retencionIRPF);
    }
    
    @Override
    public Empleado clone()
    {
        Empleado copia = new Empleado(this.nif, this.nss, this.sexo, this.nombre,
                                this.direccion, this.telefono, this.sueldoBrutoAnual,
                                this.retencionIRPF);
        
        return copia;
    }
}
